#include "graph.h"
#include<bits/stdc++.h>
using namespace std;const int N=205;
int n,w,rt,d[N],p[N],f[N][N],ans[N];vector<int>v[N];
int dfs(int pr){if(Color()==3)return 0;
	int u=++n;d[u]=d[pr]+1,v[u].resize(NumberOfRoads());
	for(int lst,i=0;i<v[u].size();i++)
		Move(i+1,3),lst=LastRoad(),v[u][i]=-dfs(u),Move(lst,3);
	return u;
}
void DFS(int u){int col=(d[u]>>w&1)+1;
	for(int x,lst,i=0;i<v[u].size();i++)if(v[u][i]>=0)
		Move(i+1,col),x=Color(),lst=LastRoad(),x==2&&(v[u][i]+=1<<w),Move(lst,x);
	for(int lst,i=0;i<v[u].size();i++)if(v[u][i]<0&&v[u][i]!=-1e9)
		Move(i+1,col),lst=LastRoad(),DFS(-v[u][i]),Move(lst,3);
}
void DFs(int u){
	for(int x,lst,i=0;i<v[u].size();i++)if(v[u][i]>=0)
		Move(i+1,3),x=Color(),lst=LastRoad(),x!=1&&(v[u][i]=-1e9),Move(lst,x);
	for(int lst,i=0;i<v[u].size();i++)if(v[u][i]<0&&v[u][i]!=-1e9)
		Move(i+1,1),lst=LastRoad(),DFs(-v[u][i]),Move(lst,3);
}
void Dfs(int u){p[d[u]]=u;
	for(int x,i=0;i<v[u].size();i++)if(v[u][i]>0)v[u][i]=p[v[u][i]];
	for(int lst,i=0;i<v[u].size();i++)if(v[u][i]<0&&v[u][i]!=-1e9)
		Move(i+1,3),lst=LastRoad(),Dfs(-v[u][i]),Move(lst,3);
}
void Inspect(int R){
	rt=dfs(0),DFs(rt);for(w=0;w<8;w++)DFS(rt);Dfs(rt);memset(f,0x3f,sizeof(f));
	for(int i=1;i<=n;i++)for(auto j:v[i])if(j>0)f[i][j]=f[j][i]=1;
	for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
		f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
	for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)ans[f[i][j]]++;
	for(int i=1;i<=R;i++)Answer(i,ans[i]);
}
